Monas document 1.0.2 (draft)
とりあえず書けたYudai.icon*2
まあ、公開しておかしい点があればどしどし批判してもらおう
それ以上に受け取れることはいっぱいあるし
-----------------------------------------------
Abstract
Monasは、データ相互運用性とユーザーのデータ主権を強化するDecentralized Personal Data Store(PDS)を目指しています。このシステムは、暗号化データ構造のCryptreeとデータの真正性を保証するBlockchain技術を核として採用し、ユーザーが自身のデータを管理し、プライバシーを守りながらデータの相互運用性を確保できるようにします。従来の「実線でのデータリンク」とは異なり、Monasは「点線でのデータリンク」を通じて、ユーザーの意志を直接反映させる新たなデータ管理のパラダイムを提案します。このアプローチにより、Monasはサイバー空間における自律性とプライバシーを保護する空間を創出します。
1.Introduction
現在データのサイロ化やプラットフォーム、AIなどでデータをプライバシーを侵害せずにどう活用するかなどが問題として挙げられています。この問題へのアプローチとしてSemantic WebやBlockchainや分散型ストレージなど暗号技術があり、データの相互運用性や第三者がユーザーの所持する価値へ関与できない仕組みなどが進みつつあります。例えばLinked dataは異なるデータ源同士をリンクする事により、データの相互運用性を高める事を目的にしています。また、Blockchainや IPFSなどは暗号技術により、権限がない第三者によるデータへの不正な編集や改竄を困難にしており、その現象がBlockchain上で実行されたのかを検証する事ができます。これにより信頼できる中立的な立場という役割を担っています。しかし、上記で挙げた概念や技術は公開前提であり、Personal dataの保存場所としては適しておらず、プライバシーや自律性には欠けていると考えられます。そのデータの公開性の問題に対処するために分散型ネットワーク上で秘密分散が使えるLit Protocolが挙げられるが、1つのデータを共有する際には複数の条件をクリアする必要があります。言い換えると一つの鍵に対して一つの鍵があり、複数のデータの共有は複数の鍵を共有するのと同じだと言え、柔軟性に欠けます。(実際にLit protocolを使用してデータの共有システムを以前開発した: Pipele)
そこで私たちはMonasという分散型Personal data storeの構想を通じて、データの相互運用性とプライバシーの両方を同時に実現をさせます。MonasはCryptreeという暗号化データ構造を構築する事で、ユーザーの意思によって自身の制御する空間への直感的かつ柔軟なアクセス制御が行われます。これはデータの保存場所、データの読み取りや書き込みが可能な人物、またその操作はいつまで継続して行えるかを自己決定する事ができます。
また、私たちはBlockchainを活用しPDSの状態管理を行うことでSolidやPersoniumなどの先行しているPDSや分散型SNSのNostrでも挙げられていた一貫性の問題にも取り組みます。
Monasのアプローチは「実線でのデータリンク」という既存とは異なり、「点線でのデータリンク」へのパラダイムシフトを意味します。これはユーザーの意思により点線から実線で繋ぐ事ができる事を表しています。Monasはユーザーだけが制御できる空間を作り出し、データの相互運用性とプライバシーの両方を実現できます。
2.About Monas
MonasはDecentralized Personal Data Store(以降PDS)です。ユーザーはData cotrollerとしてPersonal dataを管理する事ができます。Monasはユーザーにプライバシーという力を与え、企業やサービスなどにユーザーの意思を反映させる事ができます。第三者に依存しないグローバルな識別子であるDID、Data Controllerが直感的にアクセス制御可能にするCryptree、データの真正性と一貫性を保つためのBlockchainによるState管理で構成されます。
2.1DID
https://scrapbox.io/files/660bb033798e480025156f80.png
figure.1: DID Architecture
DIDとはDecentralized Identifierの略で、World Wide Web Consortium(W3C)によって標準化しています。既存のIDとは異なり、中央レジストリや IDプロバイダ、認証局から独立して設計されてます。DID controllerは第三者に依存せずに管理が可能であり、管理していることを証明できます(https://www.w3.org/TR/did-core/)。 MonasではデータはDIDに紐づく鍵によって署名がされて保存されます。これは、PDS上に書き込んだ人は正しい人であるか、また書き込まれてから改ざんや編集されていないか、そして何よりDID controllerによる操作なのかを検証する事ができます。私たちは、DIDを採用することで識別子に対しての主権をPersonal dataへ継承させる事ができ、Self-sovereign Dataの実現を可能にします。
2.2Cryptree
Cryptreeとは鍵と暗号リンクから構成される暗号化データ構造のことです。鍵を頂点、暗号リンクを辺とする有向グラフと捉える事ができます。
https://scrapbox.io/files/660bb04ff3368b002409860f.png
figure2: 暗号リンク: 図のように、ある鍵K1から別の鍵K2が存在している際に、K1を所有する全員がK2を導出可能であること
https://scrapbox.io/files/660bb0760f4e290025f543e5.png
figure 3: Cryptreeの例
そしてCryptreeでは、この暗号リンクK2 -> K1を連結していくことで暗号化データ構造を構築していきます。つまり、K1を知っていれば、その鍵の子孫鍵Knを再起的に導出可能である状態を作り出す事ができます。Monasではコア機能としてCrypree algorizumを構築し、実装することでユーザーは直感的に判断ができ、柔軟性があるアクセス制御を実現させる事ができます。
2.3 State管理
Monasではユーザーが好みのストレージ上にDIDとCrypreeによってプライベート空間の作成ができます。そこで重要になるのは、空間の状態やデータの真正性と一貫性です。Monasはこれを保証する必要があり、ブロックチェーンを採用する事で完全性を保つ事ができ、この問題にアプローチができます。空間内へデータが書き込まれる際にデータの状態をブロックチェーンにデータの状態と空間の状態を保存していきます。PDSの管理者は、アクセス許可をしたい人に対して空間の状態とファイルの状態を共有し、アクセス許可者は、この情報を使用する事で空間の状態は最新な状態なのか、また改ざんはされていないかの検証が可能になります。Monasでは状態の管理をBlockchain上で行うことで、空間へのアクセス制御だけではなく、時間へのアクセス制御を可能にします。
2.4 Monas Netwrok
Monasは中央サーバーから脱却するためにPeer to Peer networkを構築していきます。MonasNetworkには誰でも参加することが可能です。ユーザーは第三者に処理の委託をするのではなく、Peer自身で暗号化や復号化の処理やデータの書き込み処理を行います。また、Peerは中央サーバーを介して通信を行うのではなく、ネットワーク参加者同士End to End encryptionで通信を行います。私たちはPeer to Peer networkを構築することでユーザーはデータへの主権をより実感する事ができ、プライバシーという力を与えます。
3.Architecture
https://scrapbox.io/files/65fab3bc08278900256e54ba.png
figure 4: Architectureの図
Monasのアーキテクチャはfigure4で示した構成になっています。ユーザーはDIDを発行し、そのDIDによってPersonal Data Store(PDS)の管理権限を得る事ができます。
3.1 新しいデータの保存
このセクションではユーザーが新しいデータをPDS内に書き込む際の処理について紹介します。以下で紹介する処理はMonasで重要な機能であるCryptreeと状態の管理の処理をどのように行うのかの説明をします。
3.1.1状態をブロックチェーンに保存する処理
Introductionにも記載したようにPDSの一貫性(Consistency)は重要な課題になっています。Monasでは共同編集機能やアプリケーションからの書き込みがPSD内に生じる際に、現在は最新な状態なのかを問い合わせる場所が必要です。そして問い合わせる場所はサードパーティーが悪意で書き換えることが困難である事が必要です。そこで、Monasはブロックチェーンで状態の管理を行うことでPDSの一貫性、またネットワークとしての一貫性を保つ事ができると考えています。具体的には、ハッシュ関数を使用することにより、瞬間の切り取りを行いブロックチェーンに保存します。MonasではPDSの状態を管理するために、全ての階層の状態からMerkle treeなどを構築します。Merkle rootはPDS全体の状態を表していると言え、アクセスを許可された人はこの情報を使用する事でデータは改竄されていないか、また最新な状態であるかを検証する事ができます。この処理によりPDSの一貫性を保っています。またこの情報は、Monas以外のPDSとの相互運用性を実現するために使用可能です。PDSのサービスが増えてくることは容易に想像でき、その際に特定のサービスに依存する形の場合、データは結局サイロ化されます。私たちは設計の段階でこの問題を解決します。
3.1.2 データの暗号化と保存
暗号化の処理はCrypreeアルゴリズム内で行われます。DIDによって署名されたデータはある鍵Kによって暗号化されユーザーが選択した任意のストレージに保存されます。この鍵K1は親ノードである鍵K2とリンクしています。つまりK2を知る事ができれば子孫配下へアクセスができます。ここで重要なのはユーザー自身で保存する場所を選択できることです。現在はストレージ提供者に依存しています。これはデータの中身が見られたり、改ざんされるリスクがあるということです。MonasではCryptreeを実装する事により、場所に依存する事なくユーザーに全ての権限を与える事ができます。つまりストレージの抽象化を行なっています。
3.2 アクセス制御
Monasの重要な役割の一つにアクセス制御があります。ユーザーは誰に、またどこにアクセス許可を出すか、拒否をするかを管理する事ができます。Monasには2つの種類のアクセス制御があります。
Read Access control: PDS内にあるデータを読み取ることができるかのアクセス制御を行う事です。ユーザーは単体のデータまたは複数のデータを1つの鍵でアクセス制御が可能です。Cryptreeを実装する事で直感的かつ柔軟なアクセス制御を実現しています。
Write Access control: PDS内へデータを書き込む事ができるかのアクセス制御を行う事です。PDSの管理者は常時書き込むことができます。Monasでは共同編集やMonas network上でさまざまなアプリケーションの開発を可能にするために、Write access controlが重要になります。
また、アクセス権限という側面でDIDは重要な役割を担うことになります。既存ではプラットフォームやサービス側がDB内でデータを管理することでユーザーが改ざんすることは不可能でした。そこで、MonasはDIDによって書き込みが起きた際に署名を行うことで、プラットフォームからユーザーへデータの管理の権限が移転が起きてもデータは信頼できるデータのままであることを証明可能と言えます。DIDによってプラットフォームの信頼を組み込んでいます。これはVerifiable Credential(VC)と仕組みの原理は同じです。
4 Discussion
上記ではMonasの構成要素や役割について紹介しました。ここからはMonasがどのような社会的インパクトを残せる可能性があるか、またMonasを構成する上での課題点などを記していく。
4.1 状態管理としてのブロックチェーン
MonasではPDSの問題となっている一貫性についてブロックチェーンを使用することで解決できる可能性があります。3.1.1でも述べたように状態管理をブロックチェーン上で行うことで、読み取りアクセス許可をしている相手(共有相手やアプリケーション、共同編集者など)が現在の状態は最新な状態なのかを知ることができます。Monasではユーザーの空間が更新される操作が行われる際に状態ハッシュを生成し、Merkle treeを構築し、ルートハッシュをブロックチェーン上に保存します。これはブロックチェーン上で行われたトランザクションをまとめてL1に載せるロールアップに似ています。Monasではアカウント毎にオフチェーン上で処理が行われ、処理のルートハッシュをブロックチェーンに保存しています。言い換えるとMonasはL2やL3として機能する可能性があるという事です。そして、他のPDSのサービスが同じようにブロックチェーン上で状態を管理できるようになれば、異なるPDS間の通信が可能になります。
4.1.1 ルートハッシュを保存するタイミング
上記ではブロックチェーン上で状態を管理することで一貫性を保つと述べました。しかし、いくつか問題もあります。例えば共同編集の操作が行われると更新される度にMerkle treeの構築をしていく場合、いつRoot hashをブロックチェーン上に保存するかが問題になります。更新される度に保存していた場合、Merkle treeの構築をせずに毎回ブロックチェーン上に保存することと変わらないです。これは、ガス代が発生し操作をすることが高価になります。そこで、1つの解決策は更新時間を設定する事です。1日で決まった時間やユーザーの指定したタイミングで更新したりなどにより、トランザクションの発生頻度を抑えることができます。しかし、これは有効な解決策とは言えず考えていく必要があります。
4.2 共同編集
3.3でアクセス制御について記載しましたが、Write access controlの設計はRead access controlと比較して複雑性が増します。理由は、「共同編集」が生じるからです。書き込みの許可をされた人は許可された空間を編集することができます。これはフォルダ内にファイルをアップロードする操作とファイルの編集する操作が行えるということです。Monasでは書き込み操作が行われると署名とハッシュ値の生成処理が実行され真正性と一貫性を保とうとします。4.1.1で述べた事と関連するが、操作が行われる毎に2つの処理が実行される場合、ガス代と共に負荷がかかり処理時間もかかります。また、Monasでは中央サーバーで処理を行うのではなく、クライアント側で処理を行い直接やり取りを行うので、並行処理の順序づけは課題になってきます。MonasではConflict-free Replicated Data Types(CRDTs)などを採用することでデータ同期と一貫性の維持を実現していきたいと考えています。これはブロックチェーン上で状態の管理をしているからこそ、時間的概念を取り入れることができ、操作の順序づけが可能になっています。
4.3 鍵の存在
現在ブロックチェーン上で使用される鍵をどのように管理するべきかは注目されている領域の1つです。1つの鍵の管理でも難しいが、Monasでは2つの鍵が存在しています。1つ目は署名鍵です。これはMonas上にデータを書き込む際に使用され、書き込み許可された人からの書き込みなのか、また改ざんされていないかを検証するために使用されます。2つ目は、暗号化に使用する鍵です。Cryptreeではいくつかの種類の鍵が使用されていますが、全てデータやメタデータの暗号化に使用されます。つまり、ユーザーは2つの鍵を管理する必要があるとも言えます。この問題への1つのアプローチは、1つの鍵で署名と暗号化を行えるようにすることです。例えば、閾値暗号や秘密分散の実装をしているLit protocolやThreshold networkを使用することで、署名の認証を条件として設定を行うことで署名の検証が成功した際に復号化が行えるようにすることでこの問題の解決ができると考えています。また新しいDID methodの構築により、「署名鍵と公開鍵は同じ人物からの操作である」ことを証明することも重要です。
4.4 クライアント側の処理と委託処理
Monasは2.4でも述べたようにMonas networkを構築します。これはデータの追加や暗号化、復号化処理をクライアント側で行い、直接クライアント同士で通信を行います。これらの処理は誰でもクライアント側で処理が行える前提で考えられています。現在全ての人がパーソナルコンピューターを使っているとは限らず、スマートフォンで処理が行える必要があります。デバイスのどこで処理を行うのか、またスマートフォンなどは最低どの処理まで行うことができれば自己主権的にデータを管理していると言えるのかを考える必要があります。これは、Monasで中央サーバーを建てて処理を行うのではなく、処理が行える人に委託する形が取れると考えており、ビジネスとして成り立つ可能性があるポイントです。委託の作業は信頼できないデバイスであることを前提に考えることで、最低限の処理についての境界線は最大化できると考えています。
4.5 Meta Platformという世界
ユーザーがPersonal dataを保存することで、企業は利益を上げられないという問題は度々議論に上がっています。プラットフォームや企業はデータを取集することにより利益を上げてきました。言い換えるとユーザーのことを他のプラットフォームより知ることで利益を上げてきました。しかし、これはデータのサイロ化を生み出し、限界があるとも言えます。あるデータは企業内でのみデータを意味を持っています。そこで、Semantic Webの文脈で考えると異なるプラットフォームやコンテキスト間のデータを繋げることでデータは様々な意味を保つ事ができます。今までは1つのプラットフォーム内でしか意味を持たなかったデータがデータ同士のリンク、プラットフォーム同士の相互運用性により、Nという変数の繋がりを得る事ができます。これは、プライバシーの実現、つまりデータの主権を保つことを実現することでユーザーとプラットフォームが1対1の関係であったのが、1対Nと全てのプラットフォームがユーザーのデータへのアクセスできる権利が与えられると言えます。そして多くのプラットフォーム間で相互運用性が加速することでデータの価値は上がると考えられます。これはMeta platformでも記載されていたネットワーク効果を生み出すことと同意義です。MonasはMeta Platromの実現のために真正性、一貫性、信頼性があることを暗号技術や分散型技術を使用する事で検証可能にします。
4.6 データ投票
MonasのアプローチはIntroductionでも述べたように「実線でのデータリンク」という既存とは異なり、「点線でのデータリンク」へのパラダイムシフトを意味します。Monasではユーザーのデータへ第三者がユーザーの意思なしに関与することはできません。これは現在急速に発展しているAIやプラットフォームに対して力を持っていると考える事ができます。ユーザーは間違っているAIやプラットフォームに対してデータを提供しないという選択を取ることができます。これは、つまりユーザーの意思をプラットフォームやAIに対してデータによって反映させられることを示しています。ここでデータは投票権とも捉えることができ、プラットフォームやテクノロジーの統治に繋がってきます。
5 Conclusion
Monasはデータのプライバシーとデータの相互運用性を同時に成立させることを目的とした分散型Personal data store(PDS)の提案です。ブロックチェーンと暗号技術を活用することでデータの真正性と一貫性を保証し、ユーザーが自身のデータを完全に制御できるようにします。Monasはデータやプラットフォーム、コンテキスト間を実線で繋げるのではなく、ユーザーの意思を反映させられるようにすることで点線で繋ぎます。これにより既存の問題であるデータのサイロ化とプライバシーが存在しないことを同時に解決できる可能性があると考えています。
6 Next work
現在私たちはプロトタイプの実装を進めています。このプロトタイプではRead access controlとブロックチェーン上での状態管理に焦点を当てて実装をしています。
プロトタイプではCryptreeをIPFSで実装することでデータ構造を構築しています。また、状態管理はTablelandとfilecoinを使用することで一貫性を実現しています。
私たちはプロトタイプの実装後、まずは以下に取り組んでいきます。
・Write access control機能
・暗号アルゴリズムの選定
・Peer to Peer netwrokの構築
・鍵生成アルゴリズムの構築
References
日本語書いたYudai.icon
2024/4/28
IPFSのforumにも投稿しといた
いちばん解決したいCIDの特徴によって生じる問題についてYudai.icon